iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0

這次是使用Rust來進行遊戲製作,所以來快速的學習一下Rust的語言特性。
基本上Rust的安裝學習官方都有很完整的文件可以照著學習,也有線上的Playground可以線上免安裝執行程式。

推薦可以閱讀官方的教學文件,再透過線上的Playground實際練習。
The Rust Programming Language
The Rust Programming Language(繁體中文)
Rust By Example
Rust By Example(簡體中文)

等熟悉語法後會在refactoring.guru上面透過DESIGN PATTERNS in Rust學習Design Patterns,然後是ECS架構(Entity Component System)後面才會開始透過Bevy doc開始學習怎麼利用遊戲引擎開發遊戲。


Rust 特性

這邊會簡單紀錄我自己看到比較特別的特性

變數

// 宣告有分可改變mutable和不可改變
// 不可改變變數
let a = 1;
// 可改變變數
let mut a = 1;
// 可以宣告變數類型
let a :i8 = -1;

整數類型

Rust 整數類型有8, 16, 32, 64, 128位元大小,如果沒有指定則會是32位元,而前面如果是i則是帶正負號u則是無正負號。

let a = 1; // 32位元長度
let a: i8 = -1; // 8位元長度帶正負號
let a: u16 = 1; // 16位元長度不帶號

浮點數類型

浮點數有f32, f64兩種長度,皆為帶號變數

let a = 2.0; // 預設為f64
let a: u32 = -2.0; // 32位元長度

字元類型

Rust 和C一樣有char字元,字串與字元的差別在於單引號和雙引號

let x = 'A';
let x: char = 'A'; 
let x = "I'm string"; 

Tuple & Array

  1. 定義與宣告:

    • Rust:
      • tuple: 使用小括號,例如 let t = (1, "string", 3.14);
      • array: 使用中括號,例如 let a = [1, 2, 3, 4, 5];
    • Python:
      • tuple: 使用小括號,例如 t = (1, "string", 3.14)
      • list: 使用中括號,例如 l = [1, 2, 3, 4, 5]
  2. 可變性:

    • Rust:
      • tuple: 一旦宣告就不能修改
      • array: 長度固定且無法更改,但如果宣告為可變(mut),其內容可以變動。
    • Python:
      • tuple: 不可變
      • list: 可變
  3. 大小與類型:

    • Rust:
      • tuple: 可以包含不同的資料類型,如 (i32, f64, &str)
      • array: 所有元素必須是相同的類型,而且大小(元素數量)在宣告時就已確定
    • Python:
      • tuple 和 list: 都可以包含不同的資料類型,例如 [1, "string", 3.14]
  4. 方法與功能:

    • Rust:
      • tuple: 通常使用解構或索引來存取元素
      • array: 提供一系列Method,如 len() 和迭代功能
    • Python:
      • tuple 和 list: 都提供一系列Method,但 list 擁有更多的方法,如 append(), remove(), pop() 等等。
  5. 效能:

    • Rust 的 array 在記憶體中是連續的且具有固定大小,所以在某些情境中可能比 Python 的 list 有更好的效能。
    • Python 的 list 是動態陣列,所以在添加或移除元素時可能需要更多的記憶體操作。
  6. 用途:

    • 在 Rust 中,當您知道數據的大小並且它不會更改時,可以使用 array。當您需要存儲不同類型的元素且不需要更改集合的大小時,可以使用 tuple,如果需要增減array則需使用vector(動態陣列, 向量)
    • 在 Python 中,如果您不需要修改集合,則使用 tuple。否則,使用 list。

上一篇
[Day 3] 如何開始遊戲製作
下一篇
[Day 5] Rust 學習計畫2
系列文
三十歲時在做什麼?有沒有空?可以來做遊戲嗎?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言